In recent years, many systems including wireless communication systems, such as Wideband-Code Division Multiple Access (W-CDMA), Long Term Evolution (LTE) and Worldwide Interoperablity for Microwave Access (WiMAX), and Advanced Digital Satellite Broadcasting System in Japan, use a turbo code and a low-density parity-check code (LDPC) as an error-correcting code. These codes are characterized by having such a high error-correcting effect so as to enable achieving a high transfer rate close to the Shannon limit.
It is a common practice to perform iterative decoding in the case of decoding of data encoded by means of a turbo code or a LDPC code. Iterative decoding is a process in which decoding is performed by using reliability information obtained by decoding at the immediately preceding time and this process is performed a certain number of times. Iterative decoding has a high error-correcting effect but has the drawback of requiring an enormous amount of processing time when the number of decoding iterations is large.
In a base station used in a wireless communication system such as the above-mentioned LTE or WiMAX system, decoding of data sent from a plurality of user terminals needs to be completed within a certain time period so as to satisfy a predetermined delay requirement. However, if the number of users is increased, and if the number of decoding iterations for each user is increased, there is a possibility of failure to complete decoding of data from all the users within the certain time period, which means the possibility of a reduction in throughput of the system.
Therefore various methods for controlling the number of decoding iterations are being studied.
Methods studied as a method for controlling the number of decoding iterations include, for example, a method in which a maximum number of decoding iterations is set in common for all users in advance and decoding is repeatedly performed until the number of decoding iterations becomes equal to the maximum number.
Also, in patent literature 1 (JP2002-152056A), a method is discussed in which with respect to each user, the state of a channel used by the user's terminal for the transmission of data is determined; a maximum number of decoding iterations for the user is set based on the state of the channel determined with respect to the user; and decoding is repeated until the number of decoding iterations becomes equal to the maximum number.
Another method in which a maximum number of decoding iterations is fixed; error detection is performed each time decoding is performed; and determination is made as to whether or not decoding is to be repeated. In this method, a user terminal on a transmitting side adds cyclic redundancy check (CRC) bits for error detection to data, thereafter encodes the data and transmits the encoded data. A decoding device in a base station on a receiving side repeats decoding and error detection on the result of decoding by means of CRC. If no error is detected in the decoding result, the decoding device discontinues decoding even before the number of decoding iterations becomes equal to the maximum number. This decoding device will be described with reference to FIG. 1.
Referring to FIG. 1, data I(0), I(1), . . . , I(N−1) is data transmitted from user terminals. This data will be referred to as “data before decoding”. Data O(0), O(1), . . . , O(N−1) is data output from decoding device 10 after decoding on the data before decoding. This data will be referred to as “data after decoding”. Suffixes in brackets for the data before decoding and the data after decoding represent user numbers, and N represents the number of users for whom decoding device 10 performs decoding.
The decoding device 10 shown in FIG. 1 has iterative decoding section 11 and error detection section 12.
Iterative decoding section 11 performs decoding of the data before decoding from a user and outputs a decoding result to error detection section 12.
Error detection section 12 performs error detection by CRC on the decoding result output from iterative decoding section 11 and outputs the decoding result to the outside if no error is detected. On the other hand, if an error is detected in the decoding result, error detection section 12 outputs reliability information to iterative decoding section 11. Iterative decoding section 11 is informed of the occurrence of the error in the decoding result through the output of the reliability information.
When the data after decoding is output to the outside, iterative decoding section 11 performs decoding of the data before decoding from another user. On the other hand, when the reliability information is output from error detection section 12, iterative decoding section 11 again performs decoding of the data before decoding from the same user by using the reliability information.
FIG. 2 is a flowchart showing the operation of decoding device 10 shown in FIG. 1.
In the following description, n is used as a variable number representing the number of user numbers, and n is an integer equal to or larger than 0.
In the following description, k is used as a variable number representing the number of decoding iterations, and k is an integer equal to or larger than 0. Also, in the following description, the maximum number of decoding iterations is Kmax.
Iterative decoding section 11 starts processing in order from n=0 (step S101).
Iterative decoding section 11 first determines whether or not n is smaller than N (step S102). If n is smaller than N (step S102: Yes), iterative decoding section 11 sets k=0 (step S103) and performs decoding of the data before decoding I(n). Iterative decoding section 11 also increments k by 1 (step S104).
Error detection section 12 performs error detection by CRC on the result of decoding of the data before decoding I(n) (step S105) and determines whether or not any error has been detected (step S106).
If an error is detected in the decoding result (step S106: Yes), iterative decoding section 11 determines whether or not k is smaller than Kmax (step S107). If k is smaller than Kmax (step S107: Yes), error detection section 12 outputs reliability information to iterative decoding section 11 (step S108) and iterative decoding section 11 performs decoding of the data before decoding I(n) by using the reliability information and increments k by 1 (step S104).
If no error is detected in the decoding result (step S106: No), or if k is not smaller than Kmax (if the number of decoding iterations becomes equal to the maximum number of decoding iterations), error detection section 12 outputs the decoding result output from iterative decoding section 11 as data after decoding O(n) (step S109).
When data after decoding O(n) is output, iterative decoding section 11 increments n by 1 (step S110). The processing from step S102 to step S110 is thereafter repeated until n=N−1, thereby performing decoding of the data before decoding from all users.
When decoding of the data before decoding from all the users is completed, and when n is not smaller than N (step S102: No), iterative decoding section 11 ends the process.
Thus, if no error is detected by error detection section 12, iterative decoding section 11 discontinues decoding even before the number k of iterations of decoding becomes equal to the maximum number Kmax.
Therefore the number of decoding iterations can be reduced in comparison with the method in which decoding is repeated until the number of decoding iterations becomes equal to the maximum number Kmax.